﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ESAN.Componentes.BLCoreESAN.Logic.Facade;
using FA = ESAN.Componentes.BLCoreESAN.Logic.Facade;
using ESAN.Componentes.DACoreESAN.Logic.Facade;
using ESAN.Componentes.DACoreESAN.Models;

namespace ESAN.Componentes.InscripcionOnlineESAN.Areas.Postulante.Controllers
{
    public class FichaController : Controller
    {
        //
        // GET: /Postulante/Ficha/

        public ActionResult Login()
        {
            return View();
        }

        public ActionResult LoginForm(FormCollection form)
        {
            IN_POSTULANTE postulante = BLCliente.ValidarUsuario(form["Clie_Email"]);
            if (postulante!=null)
            {
                ViewBag.PostulanteID = postulante.Post_ID;
                return View("Index");
            }
            return View("Login");
        }

        public ActionResult Index()
        {
            //ViewBag.ListarMaestra = FA.Maestra.ListarMaestra(null);
            return View();
        }

        public ActionResult Personal()
        {

            return PartialView();
        }

        public ActionResult PersonalForm(int idPostulante)
        {
            ViewBag.ListarMaestra = FA.BLMaestra.ListarMaestra(null);
            ViewBag.ListarPais = FA.BLMaestra.ListarPais(null);
            ViewBag.Cliente = BLCliente.ObtenerCliente(idPostulante);
            return PartialView();
        }

        public ActionResult EditarFormacionAcademica(int Oest_ID)
        {
            ViewBag.ListarPais = FA.BLMaestra.ListarPais(null);
            ViewBag.ObtenerFormacionAcademica = BLCliente.ObtenerClienteFormacionAcademica(Oest_ID);
            return PartialView("FormacionAcademicaMant");
        }

        public ActionResult FormacionAcademicaMant()
        {
            ViewBag.ListarPais = FA.BLMaestra.ListarPais(null);
            return PartialView();
        }

        public ActionResult FormacionAcademicaForm()
        {
            return PartialView();
        }

        public ActionResult FormacionAcademicaListado(int idPostulante)
        {
            ViewBag.ListarPais = FA.BLMaestra.ListarPais(null);
            ViewBag.ListarFormacion = BLCliente.ListarClienteFormacionAcademica(idPostulante);
            return PartialView();
        }

        public ActionResult ExperienciaLaboralMant()
        {

            return PartialView();
        }

        public ActionResult ExperienciaLaboralListado(int idPostulante)
        {
            ViewBag.ListarExperiencia = BLCliente.ListarClienteExperienciaLaboral(idPostulante);
            return PartialView();
        }

        public ActionResult IdiomaListado(int idPostulante)
        {
            ViewBag.ListarIdioma = BLCliente.ListarClienteIdioma(idPostulante);
            return PartialView();
        }

        public ActionResult IdiomaMant()
        {
            return PartialView();
        }

        public ActionResult EditarIdioma(int CLId)
        {
            ViewBag.ObtenerIdioma = BLCliente.ObtenerClienteIdioma(CLId);
            return PartialView("IdiomaMant");
        }

        public ActionResult EditarExperienciaLaboral(int ExLa_ID)
        {
            ViewBag.ObtenerExperienciaLaboral = BLCliente.ObtenerClienteExperienciaLaboral(ExLa_ID);
            return PartialView("ExperienciaLaboralMant");
        }

        public ActionResult EncuestaForm()
        {
            return PartialView();
        }

        public ActionResult CodigoHonorForm(int idPostulante)
        {
            ViewBag.ObtenerCodigoHonor = BLPostulante.ObtenerCodigoHonor(idPostulante);
            return PartialView();
        }
        public JsonResult RegistrarCodigoHonor(int idPostulante, bool valor)
        {
            bool exito = BLPostulante.RegistrarCodigoHonor(idPostulante, valor);
            return Json(new { respuesta = exito.ToString() }, JsonRequestBehavior.AllowGet);
        }

        public JsonResult RegistrarIdioma(int CLId, int idPostulante, string nombreIdioma, int nivelLectura, int nivelEscritura, int nivelHablado)
        {
            bool exito = BLCliente.RegistrarClienteIdioma(CLId, idPostulante, nombreIdioma, nivelLectura, nivelEscritura, nivelHablado);
            return Json(new { respuesta = exito.ToString() }, JsonRequestBehavior.AllowGet);
        }

        public JsonResult EliminarIdioma(int CLId)
        {
            bool exito = BLCliente.EliminarClienteIdioma(CLId);
            return Json(new { respuesta = exito.ToString() }, JsonRequestBehavior.AllowGet);
        }

        public JsonResult RegistrarExperienciaLaboral(int ExLa_ID,
                                                      int idPostulante,
                                                              string nombreEmpresa,
                                                              string cargo,
                                                              decimal sueldo,
                                                              string area,
                                                              DateTime fechaInicio,
                                                              DateTime fechaFin,
                                                              string jefeInmediato,
                                                              string jefeTelefono,
                                                              string rubro)
        {
            bool exito = BLCliente.RegistrarClienteExperienciaLaboral(ExLa_ID, idPostulante,
                                                               nombreEmpresa,
                                                               cargo,
                                                               sueldo,
                                                               area,
                                                               fechaInicio,
                                                               fechaFin,
                                                               jefeInmediato,
                                                               jefeTelefono,
                                                               rubro);
            return Json(new { respuesta = exito.ToString() }, JsonRequestBehavior.AllowGet);
        }

        public JsonResult EliminarExperienciaLaboral(int ExLaID)
        {
            bool exito = BLCliente.EliminarClienteExperienciaLaboral(ExLaID);
            return Json(new { respuesta = exito.ToString() }, JsonRequestBehavior.AllowGet);
        }

        public JsonResult EliminarFormacionAcademica(int OEst_ID)
        {
            bool exito = BLCliente.EliminarClienteFormacionAcademica(OEst_ID);
            return Json(new { respuesta = exito.ToString() }, JsonRequestBehavior.AllowGet);
        }

        public JsonResult RegistrarFormacionAcademica(int OEst_ID,
                                                              int idPostulante,
                                                              string nombreCentro,
                                                              int idPais,
                                                              DateTime fechaInicio,
                                                              DateTime fechaFin,
                                                              string profesion,
                                                              string anno)
        {
            bool exito = BLCliente.RegistrarClienteFormacionAcademica(OEst_ID, idPostulante,
                                                               nombreCentro,
                                                               idPais,
                                                               fechaInicio,
                                                               fechaFin,
                                                               profesion,
                                                              anno);
            return Json(new { respuesta = exito.ToString() }, JsonRequestBehavior.AllowGet);
        }

        public JsonResult ActualizarClienteInformacionPersonal(int idPostulante,
                                                                string nombre,
                                                                string paterno,
                                                                string materno,
                                                                string sexo,
                                                                DateTime fecNac,
                                                                string estCivil,
                                                                string tipoDoc,
                                                                string nroDoc,
                                                                string paisNac,
                                                                string telefono,
                                                                string email,
                                                                string direccion)
        {
            IN_CLIENTE cliente = new IN_CLIENTE();
            cliente.Clie_Nombre = nombre;
            cliente.Clie_ApePaterno = paterno;
            cliente.Clie_ApeMaterno = materno;
            cliente.Clie_NomCompleto = (paterno + " " + materno + " " + nombre);
            cliente.Clie_Sexo = sexo;
            cliente.Clie_FecNaci = fecNac;
            cliente.Clie_EstCivil = estCivil;
            cliente.Clie_TipDocIden = tipoDoc;
            cliente.Clie_NumDocIden = nroDoc;
            cliente.Clie_PaisNaci = paisNac;
            cliente.Clie_Telefono = telefono;
            cliente.Clie_Email = email;
            cliente.Clie_Direccion = direccion;

            bool exito = BLCliente.ActualizarClienteInformacionPersonal(cliente, idPostulante);
            return Json(new { respuesta = exito.ToString() }, JsonRequestBehavior.AllowGet);
        }

        public ActionResult Finalizar()
        {

            return View();
        }

    }
}
